home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1997 November & December / Amiga-CD 1997 #11-12.iso / pd-disketten / ungepackt / 9_95 / apd-9-95-2 / arexx-workshop / listings / listing1 < prev    next >
Text File  |  1996-01-25  |  4KB  |  86 lines

  1. /* APIGWindow */
  2. /* Vorbereitungen für apig-Oberfläche ----------------------- */
  3.  
  4. call addlib("rexxsupport.library",0,-30,0) /* zus. Libraries  */
  5. call addlib("apig.library",0,-30,0)        /* einbinden       */
  6. call SET_APIG_GLOBALS(     /* apig-Funktionen initialisieren  */
  7.  
  8. portname = "apigWindow"          /* Portnamen festlegen       */
  9. portlist = Showlist('p')         /* Portliste einlesen        */
  10. if find(portlist,portname) > 0   /* Wenn portname in portlist */
  11.    then exit                     /*      dann Prg beenden     */
  12. p = openport(portname)           /* ARexx-Port öffnen         */
  13.  
  14. scr          = LOCKPUBSCREEN("Workbench")  /* Screenpointer   */
  15. scrvinfo     = GETVISUALINFO(scr)          /* Alle nötigen    */
  16. scrfont      = GETVALUE(scr,40,4,'p')      /* Pointer für     */
  17. glistpointer = ALLOCVEC(4,MEMF_CLEAR)      /* Gadget-Struktur */
  18. conxgad      = CREATECONTEXT(glistpointer) /* einlesen        */
  19. previousgadget = conxgad
  20.  
  21. /* Gadget-Struktur erstellen -------------------------------- */
  22. okbutton = 10                 /* ID für Button festlegen      */
  23. gadname = "OK"                /* Name,                        */
  24. gadid   = okbutton            /* Identifier,                  */
  25. top     = 10                  /* Position der                 */
  26. lft     = 10                  /* linken oberen Ecke,          */
  27. wdt     = 50                  /* Länge und                    */
  28. hgt     = 15                  /* Höhe des Gadgets festlegen   */
  29.  
  30. /* Gadget-Struktur initialisieren --------------------------- */
  31. newgadx = MAKENEWGADGET(scrvinfo,scrfont,lft,top,
  32.                         ,wdt,hgt,gadname,PLACETEXT_IN,gadid,0)
  33. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,
  34.                              ,newgadx,TAG_DONE,0)
  35.  
  36. /* Fenster erstellen und öffnen ----------------------------- */
  37. winlft   = 10; wintop  = 10         /* Position links,oben    */
  38. winhgt   = 52; winwdt  = 78         /* Höhe, Breite           */
  39. winpen1  = 2 ; winpen2 = 4          /* Farben festlegen       */
  40. wintitle = "My first apig-Window"   /* Titel des Fensters.    */
  41.  
  42. /* Attribute, auf die per Message reagiert werden sollen ---- */
  43. winidcmp = CLOSEWINDOW+GADGETUP
  44.  
  45. /* Fenstereigenschaften festlegen und Fenster öffnen ---------*/
  46. winflags = WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH+GIMMEZEROZERO
  47. win1 = OPENWINDOW(portname,winlft,wintop,winwdt,winhgt,winpen1,
  48.        ,winpen2,winidcmp,winflags,wintitle,scr,0,0,0,conxgad)
  49.  
  50. /* Fensterinhalt-update, da mit erstellte Gadgets erscheinen. */
  51. call GT_REFRESHWINDOW(win1,null())
  52.  
  53. /* Hauptprogramm-Steuerschleife ----------------------------- */
  54. /*   funktioniert fast wie TestMsg aus Folge 1                */
  55.  
  56. exitme = 0
  57. do forever
  58.   x = waitpkt(portname)
  59.   do forever
  60.     msg = getpkt(portname)
  61.       if msg = "0000 0000"x then leave
  62.       class = getarg(msg,0)
  63.       if class = DIE         then exitme = 1
  64.       if class = CLOSEWINDOW then exitme = 1
  65.       if class = GADGETUP    then do
  66.          gadid = getarg(msg,9)
  67.          select
  68.            when gadid = okbutton  then exitme = 1
  69.            otherwise nop
  70.          end
  71.       end
  72.       x = reply(msg,0)
  73.   end
  74.   if exitme = 1 then leave
  75. end
  76.  
  77. /* Fenster schließen und Resourcen freigeben ---------------- */
  78. call CLOSEWINDOW(win1)             /* Fenster schließen und   */
  79. call UNLOCKPUBSCREEN(null(),scr)   /*      sämtliche          */
  80. call FREEVISUALINFO(scrvinfo)      /*       Zeiger            */
  81. call FREEGADGETS(conxgad)          /*        und              */
  82. call FREETHIS(newgadx)             /*      Resourcen          */
  83. call FREEVEC(glistpointer)         /*   wieder freigeben      */
  84.  
  85. exit                               /* Programmende            */
  86.